package com.gopay.remote.bank;

import java.util.Date;
import java.util.Map;

import com.gopay.common.exception.GopayException;

/**
 * 
 * @Description 银行存管
 * @author hougn
 * @date 2016年4月24日
 *
 */
public interface SuperviseBankManagerRemoteService{

    /**
     * 验签
     * @param msg
     * @param sign
     * @return
     * @throws GopayException
     */
    public boolean verify(String msg, String sign) throws GopayException;
    
    /**
     * 签名
     * @param msg
     * @return
     * @throws GopayException
     */
    public String sign(String msg) throws GopayException;
    /**
     * 向银行发送报文请求
     * @param url        请求的URL
     * @param map        业务参数
     * @return
     * @throws GopayException
     */
    public Map<String,Object> doHttpPost(String url, Map<String, Object> map) throws GopayException;
    
    /**
     * 发送文件
     * @param <T>
     * @param map   		查询出对象的map
     * @param fileName  	 需要存储的文件名称
     * @param date			需要查询并发送的数据的日期
     * @throws GopayException
     */
    public void doFileSend(Map<String, Object> map,String fileName, Date date) throws GopayException;
    
    /**
     * 获取文件
     * @param map
     * @return
     * @throws GopayException
     */
    public void doGetFile(Map<String, Object> map) throws GopayException;
    /**
     * 读取某天的回盘文件
     * @param <T>
     * @param date 需要读取的回盘文件的日期
     * @param fileName  需要读取的回盘文件的名字（不包含扩展名）
     * @param clazz  文件对应的实体类
     * @throws GopayException
     */
    public <T> void doGetFile(String date, String fileName ,Class<T> clazz) throws GopayException;
}
